package map;

import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.function.BiConsumer;

/*
map:   是一种双列集合,每个数据包含两个元素
       元素格式:key=value,key不许重复,value可以重复
       键和值一一对应
map实现类
    TreeMap:使用红黑树,与TreeSet类似,键值不可重复,会排序
    HashMap:使用哈希表(数组+链表+红黑树),与HashSet类似,键值不可重复
    LinkedHashMap:使用哈希表+双向链表,与LinkedHashSet类似,键唯一,存取有序

map接口的方法:
        put():添加方法(键值重复时,会修改值)
        remove():根据键值删除元素
        clear():清空元素
        containKey():是否包含给定的键
        containValue():是否包含给定的值
        isEmpty():是否为空
        size():集合长度
        get():根据键获取值
        keySet():获取所有的键
        values():获取所有值
        entrySet():获取所有键值对
遍历方式:举例见代码
        1.根据键找值
        2.根据键值对对象获取键和值
        3.forEach()方法
 */
public class MapDemo {
    public static void main(String[] args) {
        HashMap<String,String>hashMap=new HashMap<>();
        hashMap.put("张三","北京");
        hashMap.put("李四","四川");
        hashMap.put("王五","广州");
        hashMap.put("赵六","南京");
        method3(hashMap);


    }
    //3.forEach方法
    private static void method3(HashMap<String, String> hashMap) {
        //调用forEach(),使用匿名内部类获取键值
        hashMap.forEach(new BiConsumer<String, String>() {
            @Override
            public void accept(String key, String value) {
                System.out.println(key+" "+value);

            }
        });
    }

    //2.根据键值对对象获取键和值
    private static void method2(HashMap<String, String> hashMap) {
        //根据entrySet()方法,获取所有键值对对象
        Set<Map.Entry<String,String>> entrySet= hashMap.entrySet();
        //遍历Set集合
        for (Map.Entry<String,String> entry:entrySet){
        //getKey()和getValue()方法获取键和值
            String key = entry.getKey();
            String value = entry.getValue();
            System.out.println(key+" "+value);

        }
    }

    //1.根据键找值
    private static void method1(HashMap<String, String> hashMap) {
        //根据keySet()方法获取所有键
        Set<String> strings = hashMap.keySet();
        //遍历Set集合
        for (String key:strings){
            //通过get()获取值
            String value= hashMap.get(key);
            System.out.println(key+"  " +value);
        }
    }
}
